package com.tedu.api.io;

import java.io.Serializable;
import java.util.Arrays;

/**
 * 流---专门传输  对象  xxx.java
 *
 * ObjectOutputStream  对象输出流---写
 * ObjectInputStream   对象输入流---读
 *
 * 以上两个流专门传输：对象功能
 *
 * Person.java文件--先做对象传输处理
 * 步骤：1.对象添加接口-->Serializable 序列化接口【转换为二进制】
 *      2.设置版本号:按照正确方式将对象转换为二进制，二进制可以转换为对象
 *
 */
public class Person implements Serializable {
    /**
     * 版本号：决定类反序列化成功唯一标识。  版本号固定写法：静态不可改变值保存
     * 用法：一旦修改类，重新生成一个版本号，建议：直接写死版本号，避免抛出异常
     *     类的结构一旦发生变化，且类实现序列化接口，自动存在静态不可改变值保存
     * 类---版本更新---版本号确定更新版本！
     */
    //版本号
    private static final long serialVersionUID=1L;
    /**
     * transient 关键字-----程序瘦身
     * 作用：只出现序列化接口中，如果对象中很多属性或者很多方法，每个属性
     *      每个方法一旦序列化，吧每一组属性|方法--转换为二进制，浪费资源
     *      利用transient对象在序列化过程中，指定属性|方法不转换成字节
     *
     */


    //私有属性
    private String name;
    private transient String[] say;
    //属性transient 修饰--不会转换成二进制
    //对象输入流对象输出流----标准化：异常

    public Person() {
    }

    public Person(String name, String[] say) {
        this.name = name;
        this.say = say;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String[] getSay() {
        return say;
    }

    public void setSay(String[] say) {
        this.say = say;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", say=" + Arrays.toString(say) +
                '}';
    }

}
